﻿using JetBrains.Annotations;
using MugenMvvmToolkit.Interfaces.ViewModels;

namespace MugenMvvmToolkit.Interfaces
{
    /// <summary>
    ///     Represents the initialization context of view-model.
    /// </summary>
    public interface IInitializationContext
    {
        /// <summary>
        ///     Gets the activation policy.
        /// </summary>
        [NotNull]
        IActivationPolicy ActivationPolicy { get; }

        /// <summary>
        ///     Gets the <see cref="IIocAdapter" />.
        /// </summary>
        [NotNull]
        IIocAdapter IocAdapter { get; }

        /// <summary>
        ///     Gets or sets the view model which is now initialized.
        /// </summary>
        IViewModel ViewModel { get; set; }

        /// <summary>
        ///     Gets or sets the parent view model.
        /// </summary>
        IViewModel ParentViewModel { get; set; }
    }
}